import axios from "axios";
import { MessageBox, Message } from "element-ui";
import store from "@/store";
import { getToken } from "@/utils/auth";

var baseUrl =
    "https://www.fastmock.site/mock/50f52a193c21c6aa679dbbbb2f6b4372/chuxin01";
// 创建一个axios实例
const service = axios.create({
    // baseURL: process.env.VUE_APP_BASE_API, // 设置根Url
    baseURL: baseUrl, // 设置根Url
    // withCredentials: true, // 当产生跨域的时候，发送cookie
    timeout: 5000
});

// 请求拦截
service.interceptors.request.use(
    config => {
        //如果token存在
        if (store.getters.token) {
            // ['X-Token'] 是请求头信息的属性名,根据后台的属性名去修改
            config.headers["X-Token"] = getToken();
        }
        return config;
    },
    error => {
        console.log(error);
        return Promise.reject(error);
    }
);

// 响应拦截
service.interceptors.response.use(
    response => {
        const res = response.data;

        // 如果返回的状态码不是20000，则报错,20000为跟后台约束的成功状态
        // if (res.code !== 20000) {
        //     Message({
        //         message: res.message || "Error",
        //         type: "error",
        //         duration: 5 * 1000
        //     });

        //     // 50008:非法token; 50012: 其他客户端已登录; 50014: token过期
        //     if (res.code === 50008 || res.code === 50012 || res.code === 50014) {
        //         // to re-login
        //         MessageBox.confirm("登录错误，请重新登录", "Confirm logout", {
        //             confirmButtonText: "重新登录",
        //             cancelButtonText: "取消",
        //             type: "warning"
        //         }).then(() => {
        //             //重置token，并重新加载，会跳转到登录页面
        //             store.dispatch("user/resetToken").then(() => {
        //                 location.reload();
        //             });
        //         });
        //     }
        //     return Promise.reject(new Error(res.message || "Error"));
        // } else {
        //     return res;
        // }
        return res;
    },
    error => {
        console.log("err" + error); // 错误打印
        Message({
            message: error.message,
            type: "error",
            duration: 5 * 1000
        });
        return Promise.reject(error);
    }
);

export default service;